package com.example.ossdemo.util;

import lombok.Data;
import org.apache.http.HttpStatus;

import java.util.HashMap;
import java.util.Map;

@Data
public class R<T> extends HashMap<String, Object> {
//    private   int  code;
//    private   String  message;
//    private   T     data;
//
//    //    设置数据
//    public  R  data(T  data){
//        this.data=data;
//        return  this;
//    }
//
//    //    成功
//    public  static R  ok(){
//        R  r=new  R();
//        r.setCode(200);
//        r.setMessage("操作成功");
//        return  r;
//    }
//
//    //    密码错误
//    public  static R  passwordError(){
//        R  r=new  R();
//        r.setCode(201);
//        r.setMessage("密码错误");
//        return  r;
//    }
//
//    //    用户名存在
//    public  static R  usernameError(){
//        R  r=new  R();
//        r.setCode(202);
//        r.setMessage("用户名已存在");
//        return  r;
//    }
//
//
//    //    失败
//    public  static R  fail(){
//        R  r=new  R();
//        r.setCode(300);
//        r.setMessage("操作失败");
//        return  r;
//    }
//
//    //    错误：传参异常
//    public   static   R   bindError(){
//        R  r=new  R();
//        r.setCode(501);
//        r.setMessage("参数绑定异常");
//        return  r;
//    }
//
//    //    错误：json异常
//    public   static   R   jsonError(){
//        R  r=new  R();
//        r.setCode(502);
//        r.setMessage("json解析异常");
//        return  r;
//    }
//
//    //    错误：sql语法错误
//    public   static   R   sqlError(){
//        R  r=new  R();
//        r.setCode(503);
//        r.setMessage("sql语法错误");
//        return  r;
//    }
//
//    //    错误：文件上传错误
//    public   static   R   fileError(){
//        R  r=new  R();
//        r.setCode(504);
//        r.setMessage("文件上传错误");
//        return  r;
//    }
//
//    //    错误：未知异常
//    public   static   R   error(){
//        R  r=new  R();
//        r.setCode(500);
//        r.setMessage("未知异常");
//        return  r;
//    }
private static final long serialVersionUID = 1L;

    public R() {
        put("code", 0);
        put("msg", "success");
    }

    public static R error() {
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, "未知异常，请联系管理员");
    }

    public static R error(String msg) {
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR, msg);
    }

    public static R error(int code, String msg) {
        R r = new R();
        r.put("code", code);
        r.put("msg", msg);
        return r;
    }

    public static R ok(String msg) {
        R r = new R();
        r.put("msg", msg);
        return r;
    }

    public static R ok(Map<String, Object> map) {
        R r = new R();
        r.putAll(map);
        return r;
    }

    public static R ok() {
        return new R();
    }

    public R put(String key, Object value) {
        super.put(key, value);
        return this;
    }

}
